home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 April / Macworld (1999-04).dmg / Serious Software / GrooveMaker demo / GrooveMaker Demo / Media / Synth.dxr / 00191_Field_buttare4.txt < prev   
Text File  |  1998-07-27  |  20KB  |  536 lines

  1. -- click su open
  2. on mouseEnter
  3.   if the visible of window "Help" then tell window "help" to go to frame "synth12"
  4. end
  5.  
  6. on mouseLeave
  7.   if the visible of window "Help" then tell window "help" to go to frame "start"
  8. end
  9.  
  10.  
  11.  
  12. on mouseDown
  13.   global gOn
  14.   
  15.   if gOn and not(the visible of sprite 76) and not(the visible of window "help") then
  16.     repeat while the mouseDown
  17.       set the memberNum of sprite 67 to the number of member "Hopen"
  18.       updateStage
  19.     end repeat
  20.   end if
  21. end 
  22.  
  23.  
  24. on mouseUp
  25.   global gOn
  26.   
  27.   if gOn and not(the visible of window "help") then
  28.     -- se c'√® il fieldElencoSynthSalvati aperto si chiude e non prende il click
  29.     if the visible of sprite 76 then
  30.       pass
  31.     else
  32.       
  33.       set the memberNum of sprite 67 to the number of member "open"
  34.       updateStage
  35.       
  36.       openWin "openS"
  37.       -- compilo il fieldElencoSynth
  38.       put "" into field "fieldElencoSynth"
  39.       repeat with i = 1 to count(folderSynthList)
  40.         put getAt(folderSynthList,i) & return after field "fieldElencoSynth"
  41.       end repeat
  42.       set the scrollTop of member "fieldElencoSynth" to 0
  43.       
  44.       set the font of member "fieldElencoSynth" to "GMFont"
  45.       set the forecolor of member "fieldElencoSynth" to 0
  46.       
  47.     end if
  48.   end if
  49. end
  50. *******************************************************
  51. -- mouse su fieldProg
  52. on mouseEnter
  53.   if the visible of window "Help" then tell window "help" to go to frame "synth8"
  54. end
  55.  
  56. on mouseLeave
  57.   if the visible of window "Help" then tell window "help" to go to frame "start"
  58. end
  59.  
  60.  
  61.  
  62. on mouseDown
  63.   global gOn
  64.   global progList,folderSynthList
  65.   
  66.   -- se c'√® il fieldElencoSynthSalvati aperto non prende il mouseDown
  67.   -- funziona se il programma non √® bloccato dal pulsante rosso
  68.   if gOn and not(the visible of sprite 76)and (folderSynthList <> []) and not(the visible of window "help") then
  69.     put getPos(progList,field "fieldProg") into valore
  70.     
  71.     set start = the mouseV
  72.     
  73.     repeat while the mouseDown
  74.       set temp = (the mouseV - start) 
  75.       set temp = abs((valore + temp) mod 4 + 1)
  76.       if temp = 0 then set temp = 1
  77.       put getAt(progList,temp) into field "fieldProg"
  78.     end repeat
  79.     set the font of member "fieldProg" to "GMFont"
  80.     set the foreColor of member "fieldProg" to 14  
  81.     
  82.   end if
  83. end
  84.  
  85.  
  86. on mouseUp
  87.   global gProg,gArp,gOn,gOnSynth,gPosVolSynth,gPosPanSynth,gSynthSel
  88.   global progList,synthList,folderSynthList
  89.   
  90.   if gOn and (folderSynthList <> []) and not(the visible of window "help") then
  91.     -- se c'√® il fieldElencoSynthSalvati aperto si chiude e non prende il click
  92.     if the visible of sprite 76 then
  93.       pass
  94.     else
  95.       
  96.       set gProg = field "fieldProg"
  97.       
  98.       -- se la sequenza sta suonando si aggiorna
  99.       -- calcolo arp
  100.       case(getPos(arpList,gArp)) of
  101.         1,2,3,4:set arp = integer(chars(gArp,3,length(gArp)))/4
  102.         otherwise
  103.           set arp = 4
  104.       end case 
  105.       if gOnSynth then
  106.         -- vol e pan
  107.         IKSynthVolume integer(128*(-gPosVolSynth+54)/45)
  108.         IKSynthPan integer(128*(-gPosPanSynth+54)/45)
  109.         IKSynthArp getPos(progList,gProg)-1,arp,createSeq()
  110.       end if
  111.       
  112.       -- se c'√® l'hilite intorno ai marker sparisce
  113.       if gSynthSel then 
  114.         set the locH of sprite 74 to -20
  115.         set gSynthSel = 0
  116.       end if
  117.     end if
  118.   end if
  119. end
  120. *******************************************************
  121. -- mouse su fieldArp
  122. on mouseEnter
  123.   if the visible of window "Help" then tell window "help" to go to frame "synth15"
  124. end
  125.  
  126. on mouseLeave
  127.   if the visible of window "Help" then tell window "help" to go to frame "start"
  128. end
  129.  
  130.  
  131. on mouseDown
  132.   global gOn,valore
  133.   global arpList,folderSynthList
  134.   
  135.   -- se c'√® il fieldElencoSynthSalvati aperto non prende il mouseDown
  136.   -- funziona se il programma non √® bloccato dal pulsante rosso
  137.   if gOn and not(the visible of sprite 76) and (folderSynthList <> []) and not(the visible of window "help") then
  138.     put getPos(arpList,field "fieldArp") into valore
  139.     
  140.     set start = the mouseV
  141.     
  142.     repeat while the mouseDown
  143.       set temp = (the mouseV - start) 
  144.       set temp = abs((valore + temp) mod 36 + 1)
  145.       if temp = 0 then set temp = 1
  146.       put getAt(arpList,temp) into field "fieldArp"
  147.       
  148.     end repeat
  149.     set the font of member "fieldArp" to "GMFont"
  150.     set the foreColor of member "fieldArp" to 14  
  151.     
  152.   end if
  153. end
  154.  
  155.  
  156. on mouseUp
  157.   global gProg,gArp,gOn,gOnSynth,gPosVolSynth,gPosPanSynth,gSynthSel
  158.   global progList,synthList,folderSynthList
  159.   
  160.   if gOn and (folderSynthList <> []) and not(the visible of window "help") then
  161.     -- se c'√® il fieldElencoSynthSalvati aperto si chiude e non prende il click
  162.     if the visible of sprite 76 then
  163.       pass
  164.     else
  165.       set gArp = field "fieldArp"
  166.       
  167.       case(getPos(arpList,gArp)) of
  168.         1,2,3,4:set arp = integer(chars(gArp,3,length(gArp)))/4
  169.         otherwise
  170.           set arp = 4
  171.       end case 
  172.       
  173.       -- se la sequenza sta suonando si aggiorna
  174.       if gOnSynth then
  175.         -- vol e pan
  176.         IKSynthVolume integer(128*(-gPosVolSynth+54)/45)
  177.         IKSynthPan integer(128*(-gPosPanSynth+54)/45)
  178.         IKSynthArp getPos(progList,gProg)-1,arp,createSeq()
  179.       end if
  180.       
  181.       -- se c'√® l'hilite intorno ai marker sparisce
  182.       if gSynthSel then 
  183.         set the locH of sprite 74 to -20
  184.         set gSynthSel = 0
  185.       end if
  186.     end if
  187.   end if
  188. end
  189. *******************************************************
  190. -- mouse su fieldSynth
  191. on mouseEnter
  192.   if the visible of window "Help" then tell window "help" to go to frame "synth7"
  193. end
  194.  
  195. on mouseLeave
  196.   if the visible of window "Help" then tell window "help" to go to frame "start"
  197. end
  198.  
  199.  
  200. on mouseDown
  201.   global gOn
  202.   global folderSynthList
  203.   global valore,synth
  204.   
  205.   -- valore √® riferito al synth visualizzato nel field nel momento in cui inizia il mouseDown, synth fa riferimento al valore che c'√® quando finisce il mouseDown, queste variabili mi servono per capire  se devo fare il mouseUp, se quando tento di fare il mouseUp questi due valori sono uguali allora significa che non ho fatto il mouseDown e quindi faccio il mouseUp, altrimenti facevo il mouseDown e rilasciando il mouse scattava ancora di un valore
  206.   
  207.   -- se c'√® il fieldElencoSynthSalvati aperto non prende il mouseDown
  208.   -- funziona se il programma non √® bloccato dal pulsante rosso
  209.   if gOn and not(the visible of sprite 76) and (folderSynthList <> []) and not(the visible of window "help") then
  210.     put getPos(folderSynthList,field "fieldSynth") into valore
  211.     
  212.     set start = the mouseV
  213.     set the font of member "fieldSynth" to "GMFont"
  214.     set the foreColor of member "fieldSynth" to 14  
  215.     repeat while the mouseDown
  216.       set synth = (the mouseV - start) 
  217.       set synth = abs((valore + synth) mod count(folderSynthList) + 1)
  218.       if synth = 0 then set synth = 1
  219.       set the font of member "fieldSynth" to "GMFont"
  220.       set the foreColor of member "fieldSynth" to 14  
  221.       put getAt(folderSynthList,synth) into field "fieldSynth"
  222.     end repeat
  223.     
  224.     set the font of member "fieldSynth" to "GMFont"
  225.     set the foreColor of member "fieldSynth" to 14      
  226.   end if
  227. end
  228.  
  229.  
  230.  
  231. on mouseUp
  232.   global gPath,gWav,gProg,gArp,gOnSynth,gOn,gPosVolSynth,gPosPanSynth,gSynthSel
  233.   global progList,arpList,folderSynthList,synthList
  234.   global valore,synth
  235.   
  236.   if gOn and (folderSynthList <> []) then
  237.     -- se c'√® il fieldElencoSynthSalvati aperto si chiude e non prende il click
  238.     if the visible of sprite 76 then
  239.       pass
  240.     else 
  241.       
  242.       if valore = synth then
  243.         
  244.         set pos = getPos(folderSynthList,field "fieldSynth") + 1
  245.         if pos <> (count(folderSynthList) + 1) then
  246.           put getAt(folderSynthList,pos) into field "fieldSynth"
  247.         else
  248.           put getAt(folderSynthList,1) into field "fieldSynth"
  249.         end if
  250.       end if
  251.       
  252.       if gOnSynth then IKSynthStop
  253.       IKSetSynth gPath & "synth:synth" & gWav & ":" & field "fieldSynth" & ":"      
  254.       -- calcolo arp
  255.       case(getPos(arpList,gArp)) of
  256.         1,2,3,4:set arp = integer(chars(gArp,3,length(gArp)))/4
  257.         otherwise
  258.           set arp = 4
  259.       end case 
  260.       
  261.       -- vol e pan
  262.       IKSynthVolume integer(128*(-gPosVolSynth+54)/45)
  263.       IKSynthPan integer(128*(-gPosPanSynth+54)/45)
  264.       
  265.       if synthList <> [] then IKSynthArp getPos(progList,gProg)-1,arp,createSeq()
  266.       -- se c'√® l'hilite intorno ai marker sparisce
  267.       if gSynthSel then 
  268.         set the locH of sprite 74 to -20
  269.         set gSynthSel = 0
  270.       end if
  271.       set the font of member "fieldSynth" to "GMFont"
  272.       set the foreColor of member "fieldSynth" to 14  
  273.     end if
  274.   end if
  275. end
  276. *******************************************************
  277. -- click su fieldElelncoSynthSalvati
  278. on mouseDown
  279.   if line(the mouseline) of field "fieldElencoSynthSalvati" <> "" and not(the visible of window "help") then
  280.     set the foreColor of line(the mouseline) of field "fieldElencoSynthSalvati" to 14
  281.   end if
  282. end 
  283.  
  284.  
  285. on mouseUp
  286.   global gPath,gArp,gProg,gWav,gOnSynth,gPosVolSynth,gPosPanSynth,gSynthSel
  287.   global synthList,progList,arpList,synthSaveList
  288.   
  289.   if the visible of sprite 77 and not(the visible of window "help") then
  290.     -- se clicco fuori dalle linee si chiude la finestra
  291.     if line(the mouseline) of field "fieldElencoSynthSalvati" <> "" then
  292.       -- se clicco tenendo premuto il tatso SHIFT si cancella il synth salvato
  293.       if the shiftDown then
  294.         set nome = line(the mouseLine) of field "fieldElencoSynthSalvati" & ".txt"
  295.         deleteOne synthSaveList,nome
  296.         IKChangeAttrib gPath & "synthM:" & gWav & ":" & nome
  297.         deleteFile(gPath & "synthM:" & gWav & ":" & nome)
  298.       else
  299.         set the foreColor of line(the mouseline) of field "fieldElencoSynthSalvati" to 0
  300.         
  301.         set nomeFile = gPath & "synthM:" & gWav & ":" & line(the mouseline) of field "fieldElencoSynthSalvati" & ".txt"
  302.         -- leggo il file di testo
  303.         set myFile = new(xtra "fileio")
  304.         openFile(myFile,nomeFile,1)
  305.         set theFile = readFile(myFile)
  306.         closeFile(myFile)
  307.         set  myFile = 0
  308.         
  309.         -- compilo la synthList
  310.         set synthList = []
  311.         repeat with i = 1 to the number of words in line 1 of theFile
  312.           setAt synthList,i,word i of line 1 of theFile
  313.         end repeat
  314.         -- compilo i field e aggiorno le variabili
  315.         set gArp = word 2 of line 2 of theFile
  316.         set gProg = word 3 of line 2 of theFile
  317.         set gPosVolSynth = integer(word 4 of line 2 of theFile)
  318.         set gPosPanSynth = integer(word 5 of line 2 of theFile)
  319.         put gProg into field "fieldProg"
  320.         put gArp into field "fieldArp"
  321.         put word 1 of line 2 of theFile into field "fieldSynth"
  322.         
  323.         -- hilite delle note
  324.         -- se la nota compare sia nella synthList precedente che nella synthList attuale non succede niente
  325.         -- se la nota non compare nella synthList precedente e compare nella synthList attuale si accende l'hilite
  326.         -- se la nota compare nella synthList precedente e non compare nella synthList attuale si spegne l'hilite
  327.         repeat with i = 1 to 3
  328.           set start = 12*(i-1) + 3
  329.           repeat with j = 1 to 12
  330.             set nota = the name of member the memberNum of sprite (start + j) 
  331.             if char 1 of nota = "y" then
  332.               set nota = chars(nota,2,length(nota)) & i
  333.               if not getPos(synthList,nota) then 
  334.                 set nota = chars(nota,1,length(nota)-1)
  335.                 set the memberNum of sprite (start + j) to the number of member nota
  336.                 updatestage
  337.               end if
  338.               
  339.             else
  340.               set nota = nota & i
  341.               if getPos(synthList,nota) then 
  342.                 set nota = "y" & chars(nota,1,length(nota)-1) 
  343.                 set the memberNum of sprite (start+j) to the number of member nota
  344.                 updateStage
  345.               end if
  346.             end if
  347.           end repeat
  348.         end repeat
  349.         
  350.         -- play
  351.         if gOnSynth then 
  352.           IKSynthStop
  353.         else
  354.           set gOnSynth = 1
  355.         end if
  356.         
  357.         IKSetSynth gPath & "synth:synth" & gWav & ":" & field "fieldSynth" & ":"
  358.         
  359.         -- riposiziono il vol e il pan
  360.         set the locV of sprite 45 to gPosVolSynth
  361.         set the locV of sprite 46 to gPosPanSynth
  362.         updateStage
  363.         
  364.         -- calcolo arp
  365.         case(getPos(arpList,gArp)) of
  366.           1,2,3,4:set arp = integer(chars(gArp,3,length(gArp)))/4
  367.           otherwise
  368.             set arp = 4
  369.         end case 
  370.         
  371.         -- vol e pan
  372.         IKSynthVolume integer(128*(-gPosVolSynth+54)/45)
  373.         IKSynthPan integer(128*(-gPosPanSynth+54)/45)
  374.         IKSynthArp getPos(progList,gProg)-1,arp,createSeq()
  375.       end if
  376.       -- si chiude la finestra
  377.       repeat with i = 76 to 79
  378.         set the visible of sprite i to false
  379.       end repeat 
  380.       
  381.       -- se c'√® l'hilite intorno ai marker sparisce
  382.       if gSynthSel then 
  383.         set the locH of sprite 74 to -20
  384.         set gSynthSel = 0
  385.       end if
  386.     end if
  387.   end if
  388. end
  389. *******************************************************
  390. -- ************************************************************************************
  391. -- *                                                                                  * 
  392. -- *                                NOTE                                              *
  393. -- *                                                                                  *
  394. -- * i canali dal 4 al 15 contengono i tasti della prima ottava                       *
  395. -- * i canali dal 16 al 27 contengono i tasti della seconda ottava                    *
  396. -- * i canali dal 28 al 39 contengono i tasti della terza ottava                      *
  397. -- * i canali dal 14 al 21 contengono le barre dei volumi                             *
  398. -- *                                                                                  *
  399. -- * i canali dal 47 al 58 contengono i marker con le note consigliate                *
  400. -- *                                                                                  *
  401. -- * i canali dal 68 al 73 contengono i numeri dei synth marcati                      *
  402. -- * i canale 76 e 79 contengono il field con l'elenco dei synth salvati, all'apertura*
  403. -- * del file sono invisibili, compaiono quando clicco su load                        * 
  404. -- * nel canale 88 metto temporaneamente i synth marcati mentre vengono spostati      *
  405. -- * per far si che passino sopra a tutti gli altri oggetti                           *
  406. -- ************************************************************************************
  407.  
  408. -- all'uscita dal primo frame compaiono i marker per le note consigliate
  409. -- i marker occupano i frame dal 47 al 58 (ogni frame per una nota da C a B)
  410. -- inoltre se la finestar era stata chiusa in play si accende l'hilite sui tasti che stavano suonando
  411. on exitFrame
  412.   global scaleList,markerNoteList,synthList,markerSynthList
  413.   
  414.   set temp = ["C","Cd","D","Dd","E","F","Fd","G","Gd","A","Ad","B"]
  415.   
  416.   -- marker note consigliate
  417.   repeat with i = 1 to 12
  418.     set nota = getAt(temp,i)
  419.     -- se la nota √® nella scaleList compaiono i marker relativi
  420.     if getPos(scaleList,nota) then
  421.       set the locH of sprite (46 + i) to getAt(markerNoteList,i)
  422.       updateStage
  423.     end if   
  424.   end repeat
  425.   
  426.   -- hilite note che stanno suonando
  427.   if synthList <> [] then
  428.     repeat with i = 1 to 3    
  429.       set start = 12*(i-1) + 3  -- frame prima dell'inizio di ogni ottava
  430.       repeat with j = 1 to 12
  431.         set nota = the name of member the memberNum of sprite (start+j) & i
  432.         -- se la nota compare nella synthList si accende l'hilite
  433.         if getPos(synthList,nota) then 
  434.           set Hnota = "y" & chars(nota,1,length(nota)-1)
  435.           set the memberNum of sprite (start+j) to the number of member Hnota
  436.           updateStage
  437.         end if
  438.       end repeat
  439.     end repeat
  440.   end if
  441.   
  442.   -- compaiono i marker dei synth (se ce ne sono)
  443.   if markerSynthList <> [] then
  444.     repeat with i = 1 to min(count(markerSynthList),6)
  445.       set the memberNum of sprite (67+i) to the number of member string(i)
  446.       updateStage
  447.     end repeat
  448.   end if
  449.   
  450.   createGlobalVariable
  451.   handleSprite
  452.   createList
  453. end
  454. *******************************************************
  455. on exitFrame
  456.   go to the frame
  457. end
  458.  
  459. on enterFrame
  460.   global gOn,gOnSynth,gPath,gWav,gArp,gProg,gPosVolSynth,gPosPanSynth
  461.   global folderSynthList,arpList,progList,synthList
  462.   
  463.   -- controllo del led rosso
  464.   if gOn and gOnSynth then
  465.     if the visible of sprite 3 then 
  466.       set the visible of sprite 3 to false
  467.     end if
  468.   else
  469.     if not(the visible of sprite 3) then set the visible of sprite 3 to true
  470.   end if
  471.   
  472.   -- se √® aperta openS
  473.   if the visible of window "openS" then
  474.     if field "fieldSynth" = "" and folderSynthList <> [] then 
  475.       put getAt(folderSynthList,1) into field "fieldSynth" 
  476.       
  477.       IKSetSynth gPath & "synth:synth" & gWav & ":" & field "fieldSynth" & ":"
  478.       
  479.       set the font of field "fieldSynth" to "GMFont"
  480.       set the foreColor of member "fieldSynth" to 14
  481.       updateStage
  482.     end if
  483.     
  484.     if field "fieldSynth" <> "" and folderSynthList = [] then  
  485.       put "" into field "fieldSynth"
  486.       set the font of field "fieldSynth" to "GMFont"
  487.       set the foreColor of member "fieldSynth" to 14
  488.       updateStage
  489.       
  490.       IKSynthStop
  491.       
  492.       repeat with i = 1 to 3    
  493.         set start = 12*(i-1) + 3  -- frame prima dell'inizio di ogni ottava
  494.         repeat with j = 1 to 12
  495.           if char 1 of the name of member the memberNum of sprite (start+j) = "y" then
  496.             set nota = chars(the name of member the memberNum of sprite (start+j),2,length(the name of member the memberNum of sprite (start+j))) & i
  497.             if getPos(synthList,nota) then 
  498.               set nota = chars(nota,1,length(nota)-1)
  499.               set the memberNum of sprite (start+j) to the number of member nota
  500.               updateStage
  501.             end if
  502.           end if
  503.         end repeat
  504.       end repeat
  505.       set synthList = []
  506.       
  507.       set gOnSynth = 0
  508.     end if
  509.     
  510.     -- se tolgo il synth che sta suonando
  511.     if (field "fieldSynth" <> "") and (folderSynthList <> []) then
  512.       if not getPos(folderSynthList,field "fieldSynth") then  
  513.         put getAt(folderSynthList,1) into field "fieldSynth"
  514.         set the font of field "fieldSynth" to "GMFont"
  515.         set the foreColor of member "fieldSynth" to 14
  516.         updateStage
  517.         
  518.         IKSynthStop
  519.         IKSetSynth gPath & "synth:synth" & gWav & ":" & field "fieldSynth" & ":"
  520.         
  521.         -- calcolo arp
  522.         case(getPos(arpList,gArp)) of
  523.           1,2,3,4:set arp = integer(chars(gArp,3,length(gArp)))/4
  524.           otherwise
  525.             set arp = 4
  526.         end case 
  527.         
  528.         IKSynthVolume integer(128*(-gPosVolSynth+54)/45)
  529.         IKSynthPan integer(128*(-gPosPanSynth+54)/45)
  530.         IKSynthArp getPos(progList,gProg)-1,arp,createSeq()
  531.       end if
  532.     end if
  533.     
  534.   end if
  535. end
  536. *******************************************************